package cn.getech.data.development.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 配置连接表
 * </p>
 *
 * @author zenith
 * @since 2018-08-22
 */
@Data
@TableName("bdp_conf_connect")
public class ConfConnect implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "id")
    private Integer id;
    /**
     * 连接名称
     */
    @NotBlank(message = "连接名称不可为空")
    private String name;
    /**
     * 连接类型
     */
    @NotNull(message = "连接类型不可为空")
    private Integer typeId;
    /**
     * 主机名
     */
//  @NotBlank(message = "连接主机名不可为空")
    private String host;

    private String interfaceUrl;

    private String kafkaUrl;

    /**
     * webservice 服务地址
     */
    private String webServiceUrl;

    /**
     * 接口=》动态引用token    动态引用变量   variable
     */
    @TableField(exist = false)
    private String enumsValue;
    /***
     * 接口=》动态秘钥接口url
     */
    @TableField(exist = false)
    private String tokenUrl;
    /**
     * 接口=》动态引用参数变量名
     */
    @TableField(exist = false)
    private String variableName;
    /**
     * 接口=》动态引用参数变量值
     */
    @TableField(exist = false)
    private String variableValue;

    /**
     * 类型  0，1，2
     */
    @TableField(exist = false)
    private int fieldType;
    /**
     * 临时接口*
     */
    @TableField(exist = false)
    private String tmeInterfaceUrl;

    @TableField(exist = false)
    private String jdbcVersion;

    /**
     * webservice 命名空间
     */
    private String targetNameSpace;

    /**
     * webService 调用的方法
     */
    private String functionName;
//    /**
//     * webservice的soapaction
//     */
//    private String soapActionUrl;

    /**
     * 端口
     */
//    @NotBlank(message = "连接端口不可为空")
    private String port;
    /**
     * 用户名称
     */
//    @NotBlank(message = "用户名称不可为空")
    private String username;
    /**
     * 密码
     */
//    @NotBlank(message = "连接密码不可为空")
    private String password;
    /**
     * 数据库名称 /  es 索引名称
     */
//    @NotBlank(message = "数据库名称不可为空")
    private String dbname;
    /**
     * 描述
     */
    @TableField("`desc`")
    @Length(max = 200,message = "数据源描述不能超过200个字符")
    private String desc;

    /**
     * 要求类型
     */
    private Integer requestType;

    /**
     * topic
     */
    @TableField("topic")
    private String topic;

    /**
     * 格式
     */
    @TableField("format")
    private String format;

    /**
     *分隔符Id
     */
    @TableField("delimit_id")
    private Integer delimitId;

    /**
     * 编码
     */
    @TableField("code")
    private Integer code;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建用户
     */
    private Integer createPer;

    /**
     * 修改时间
     */
    private Date modTime;

    /**
     * 修改用户
     */
    private Integer modPer;

    /**
     * 用户设置的ftp文件位置
     */
    private String ftpFileLocation;

    /**
     * metastoreUris --hive数据源
     */
    @TableField("metastore_uris")
    private String metastoreUris;

    /**
     * defaultFs --hive数据源
     */
    @TableField("default_fs")
    private String defaultFs;


    @TableField("ha_model")
    private Integer haModel;
    /**
     *  --hive数据源
     */
    @TableField("name_node")
    private String nameNode;

    /**
     * defaultFs --hive数据源
     */
    @TableField("namespace")
    private String namespace;

    /**
     * defaultFs --hive数据源
     */
    @TableField("name_node_port")
    private Integer nameNodePort;

    /**
     *hive类型数据源的调度队列
     */
    @TableField("cron_queue")
    private String cronQueue;

    /**
     * oracle集群模式的url
     */
    @TableField("oracle_nts_url")
    private String oracleNtsUrl;

    /**
     * 创建用户
     */
    @TableField(exist=false)
    private String createPerName;

    /**
     * 修改用户
     */
    @TableField(exist=false)
    private String modPerName;

    /**
     * 连接类型
     */
    @TableField(exist=false)
    private String typeName;

    /**
     * 链接信息
     */
    @TableField(exist=false)
    private String info;

    @TableField(exist=false)
    private List<ConnectFieldInfo> connectFieldInfos;

    @TableField(exist=false)
    private SapConnectField sapConnectFieldInfo;

    //    @NotNull(message = "连接类型不可为空")
    private String departmentId;

    private Integer departmentType;


    private String outputTableName;

    //租户id
    @TableField("tenant_id")
    private  Integer tenantId;



//    /**
//     * 部门id
//     */
//    @TableField("department_id")
//    private Integer departmentId;

    /**
     * 部门名称
     */
    @TableField(exist=false)
    private String departmentName;


    /**
     * 连接状态: 1:正常 2:失败
     */
    private Integer connectStatus;

    /**
     * 连接状态
     */
    @TableField(exist=false)
    private String connectStatusStr;

    /**
     * 是否启用 0:不启用 1:启用
     */
    private Integer connectEnable;

    /**
     * 应用状态: 1:使用中 2:未使用
     */
    @TableField(exist=false)
    private Integer appState;

    /**
     * 应用状态: 使用中 未使用
     */
    @TableField(exist=false)
    private String appStateStr;

    /**
     * 项目名称
     */
    @TableField(exist=false)
    private String procNames;

    /**
     * 任务名称
     */
    @TableField(exist=false)
    private String taskNames;

    /**
     * 规则名称
     */
    @TableField(exist=false)
    private String ruleNames;

    /**
     * 服务名称
     */
    @TableField(exist=false)
    private String serviceNames;

    /**
     * 同步任务名称
     */
    @TableField(exist=false)
    private String syncTaskNames;

    /**
     * 数据源相关联的内容(项目名称、任务名称、规则名称、服务名称)
     */
    @TableField(exist=false)
    private String relationContent;

    /**
     *  es集群名称
     */
    @TableField(exist=false)
    private  String clusterName;

    /**
     *  初始化授权角色id
     */
    @TableField(exist=false)
    private Long roleId;

    /**
     *  可选配置
     */
    private String options;

    //判断是否是通过项目里面修改
    @TableField(exist=false)
    private Integer procId;

    /**
     * 数据类型参数
     */
    @TableField(exist = false)
    private Integer dataType;

}
